Spreadsheets are used in a large variety of circumstances for different purposes. For example, businesses often perform analyses of budgeting and forecasting operations, or simply gather business metrics. While many spreadsheet applications include a number of default functions for simple to complicated calculations, user defined functions are also a common aspect of spreadsheet applications.
Many user defined functions (or default functions) involve computations that can be completed completely within the spreadsheet application and without requiring extensive processing power. On the other hand, some functions may involve operations that require extensive processing or use of external resources such as external data stores or computational resources. For such functions, spreadsheet computation may slow down or come to a halt if the wait for computing the function is long. Some user may rather not use up a spreadsheet calculation thread while waiting. This is important for situations such as external data feeds, or in the High Performance Computing (HPC) field, where users may like to launch remote calculations on an HPC grid without blocking spreadsheet calculations.